package com.blueocean_health.care.management.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.fastjson.JSONObject;
import com.blueocean_health.care.management.common.base.string.StringUtils;
import com.blueocean_health.care.management.domain.base.SysResult;
import com.blueocean_health.care.management.domain.base.SysResultByPage;
import com.blueocean_health.care.management.domain.dto.TeamListDto;
import com.blueocean_health.care.management.domain.vo.ProjectVo;
import com.blueocean_health.care.management.domain.vo.TeamVo;
import com.blueocean_health.care.management.service.ProjectService;
import com.github.pagehelper.PageInfo;

/**
* 项目controller 
* @author huyanqiu
* @date 2018年3月21日 下午6:27:27
* @version 版本号：1.0
*/
@RestController
@RequestMapping("/project")
public class ProjectController {
	
	@Autowired
	private ProjectService projectService;
	
	/**
	 * 创建项目
	 * @return
	 */
	@RequestMapping("/add")
	public SysResult add(@RequestBody ProjectVo projectVo) {
		if (StringUtils.isEmpty(projectVo.getName())) {
			return SysResult.error("项目名称不能为空");
		}
		// 保存项目
		projectService.add(projectVo);
		return SysResult.ok("创建项目成功");
	}
	
	/**
	 * 编辑项目
	 * @return
	 */
	@RequestMapping("/modify")
	public SysResult modify(@RequestBody ProjectVo projectVo) {
		if (StringUtils.isEmpty(projectVo.getName())) {
			return SysResult.error("项目名称不能为空");
		}
		if (StringUtils.isEmpty(projectVo.getId())) {
			return SysResult.error("项目id不能为空");
		}
		// 编辑项目
		projectService.modify(projectVo);
		return SysResult.ok("编辑项目成功");
	}
	
	/**
	 * 启动/禁用项目
	 * @return
	 */
	@RequestMapping("/status")
	public SysResult status(@RequestBody String jsonString) {
		JSONObject jsonObject =  JSONObject.parseObject(jsonString);
		// 组织id
		Integer id = (Integer) jsonObject.get("id");
		// 状态  1.启用  2.禁用
		Integer status = Integer.parseInt((String)jsonObject.get("status"));
		if (StringUtils.isEmpty(id, status)) {
			return SysResult.error("请求参数有误");
		}
		if (!(status==1 || status==2)) {
			return SysResult.error("参数非法");
		}
		// 启动/禁用项目
		projectService.status(id, status);
		return SysResult.ok();
	}
	
	/**
	 * 查询项目详情
	 * @return
	 */
	@RequestMapping("/query")
	public SysResult query(@RequestBody String jsonString) {
		JSONObject jsonObject =  JSONObject.parseObject(jsonString);
		// 项目id
		Integer id = (Integer) jsonObject.get("id");
		TeamVo teamVo = projectService.query(id);
		return SysResult.ok(teamVo);
	}
	
	/**
	 * 查询项目列表
	 * @return
	 */
	@RequestMapping("/list")
	public SysResult list(@RequestBody TeamListDto teamListDto) {
		if (StringUtils.isEmpty(teamListDto.getParentId())) {
			return SysResult.error("请求参数有误");
		}
		PageInfo<ProjectVo> pageInfo = projectService.list(teamListDto);
		return SysResultByPage.ok(0, "SUCCESS", pageInfo.getList(), pageInfo.getTotal()); 
	}
	
	/**
	 * 删除项目
	 * @return
	 */
	@RequestMapping("/delete")
	public SysResult delete(@RequestBody String jsonString) {
		JSONObject jsonObject =  JSONObject.parseObject(jsonString);
		// 项目id
		Integer id = (Integer) jsonObject.get("id");
		// 删除项目
		projectService.delete(id);
		return SysResult.ok("删除成功");
	}
	
}
